<?php
require_once "default/models/Prueba_Abm.php";
Class Cms_Cms_Controller extends Gi_Controller_Action {
  public $pagina;
  public $config;
  public $pag_data;
  public $cod_idioma;
  public $urls_idiomas;
  
  public function cms_action () {
    $p = $this->request->get_params();    
    
    $this->pagina = $p[cmd];
    
    if (!$this->pagina) {
      $this->pagina = '/';
    }
    
    $this->get_pag_data();
    
    if (!$this->pag_data) {
      //esto deberia poder hacerse desde el objeto response.. revisarlo
      header("HTTP/1.0 404 Not Found");
      $this->pagina = '404';
      $this->get_pag_data();
      if (!$this->pag_data) {
        var_dump('No se encuentra la pagina -> error 404');
      }
    }
         var_dump($this->pag_data);   
    //ejecutamos el comando
    if ($this->pag_data[Module] !== "CMS" && $this->pag_data[Controller] !== "CMS") {
      //ejecutamos module controller action correspondiente
      parse_str($this->pag_data[CmdParams],$params);
      $this->forward($this->pag_data[Action],$this->pag_data[Controller],$this->pag_data[Module],$params);
    }
    else {
      if ($this->pag_data[Action]) {
        $method = strtolower($this->pag_data[Action])."_action";
        $this->$method ();
      }
    
      $this->config = Gi_Config::get_from_ini("cms/config/cms.ini","mod_cms");
    
      $this->cod_idioma = ($this->pag_data['CodIdioma'] ? $this->pag_data['CodIdioma'] : $this->config['cms_idioma_default']);
    
      //urls de las paginas traducidas si esta el multiidioma activado
      if ($this->config['cms_multi_idioma'] == 1) {

        $sql = new Gi_Sql_Writer("SELECT","gi_cms_pagina pagina","CodIdioma, URL");
        $sql->add_where("CodPaginaIdioma = '{$this->pag_data[CodPaginaIdioma]}'");
        $sql->add_where("CodIdioma <> '{$this->cod_idioma}'");
        $this->urls_idiomas = Gi_Db::get_recordset($sql);
      }
    
      if ($this->pag_data['TitleTag']) {
        $this->view->assign('title_tag',$this->pag_data["TitleTag"]);
      }
      else {
        $this->view->assign('title_tag',$this->config['cms_default_title_tag']);
      }
      if ($this->pag_data['DescriptionTag']) {
        $this->view->assign('description_tag',$this->pag_data["DescriptionTag"]);
      }
      else {
        $this->view->assign('description_tag',$this->config["cms_default_description_tag"]);
      }
      
      //armar menu... generar un objeto que maneje los menus
      
      //si vienen parametros con la pagina se pasan via get
      if ($this->pag_data['PageParams']) {
        parse_str($this->pag_data['PageParams'],$tmp_params);
        $_GET = array_merge($tmp_params,$_GET);
      }
      
      if ($this->page_data['Template']) {
        $this->view->assign('center_tpl',$this->pag_data['Template']);
      }
      
      //carga archivo cfg con textos fijos del template
      if (preg_match('/(.*).html/',$this->pag_data['Template'],$matches)) {
        $cfg_file = "cms/config/".$matches[1].'.cfg';
        if (file_exists($cfg_file)) {
          $this->view->assign("texts",Gi_Config::get_from_ini($cfg_file,$this->cod_idioma));
        }
      }
      
      //SnNoIndex
      if ($this->pag_data['SnNoIndex']>0) {
        $this->view->assign('robots_no_index',1);
      }
      
      //URL actual
      $this->view->assign('url_actual',$this->pagina.'.html');
      //Root URL
      $this->view->assign('root_url',$this->request->get_base_url());
      //URLs de idiomas
      $this->view->assign('idioma',$this->cod_idioma);
      $this->view->assign('lang_url',$this->urls_idiomas);
      //menu
      $this->view->assign('menu',$this->menu);
      //carga los datos de la pagina
      $this->view->assign('data',$this->pag_data);
      //muestra el resultado
      $this->view->render($this->config[cms_frame_template]); 
      
      var_dump($this);
    }
    
  }
  
  public function get_pag_data () {
    $sql = new Gi_Sql_Writer("select","gi_cms_pagina pagina","*");
    $sql->add_join("INNER","gi_cms_comando","cmd","pagina.CodComando = cmd.CodComando");
    $sql->add_join("inner","gi_cms_pagina_content","cont","pagina.IdPagina=cont.IdPagina");
    $sql->add_where("pagina.URL = '$this->pagina'");
    try {
      $this->pag_data = Gi_Db::get_lookup($sql);
    }
    catch (Gi_Exception $e) {
      echo $e->getMessage();
      var_dump($sql);
      return false ;
    }
    return true;
  }
  
  //metodos de los Comandos de las paginas aqui
  public function texto_action () {
    echo  "Funciono OK!!!";
  }
}